home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Disc to the Future 2
/
Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin
/
MAC
/
THINKC
/
TCL1
/
__MANDEL
/
MANDELBR
/
CMANDELV.C
< prev
next >
Wrap
Text File
|
1992-03-28
|
1KB
|
70 lines
// CMandelVLinePhase.c
#include "CMandelVLinePhase.h"
extern long gTickLimit;
CMandelPhase *
CMandelVLinePhase::Perform(void)
{
asm
{
movem.l d3/a3,-(sp)
fmovem fp4-fp7,-(sp)
move.l (this),a3
fmove.x CMandelVLinePhase.itsScale(a3),fp0
move.w CMandelVLinePhase.itsMaxDwell(a3),d2
fmove.x CMandelVLinePhase.itsHStart(a3),fp6
fmove.x CMandelVLinePhase.itsVStart(a3),fp7
move.w CMandelVLinePhase.itsLength(a3),d1
move.l CMandelVLinePhase.itsRowSize(a3),d3
move.l CMandelVLinePhase.itsDwellsH(a3),a1
move.l (a1),a0
adda.l CMandelVLinePhase.itsIndex(a3),a0
@0:
move.l Ticks,d0
cmp.l gTickLimit,d0
bgt @4
move.w d2,d0
fmove.x fp6,fp2 ; Z.a = Z0.a
fmove.x fp7,fp5 ; Z.b = Z0.b
bra @2
@1:
fsub.x fp3,fp2
fmul.x fp4,fp5
fscale.x #1.0,fp5
fadd.x fp6,fp2 ; ZZ.a += Z0.a
fadd.x fp7,fp5 ; ZZ.b += Z0.b
@2:
fmove.x fp2,fp4 ; Z = ZZ
fmul.x fp4,fp2 ; temp = ZZ.a * ZZ.a + ZZ.b * ZZ.b
fmove.x fp5,fp3
fmul.x fp5,fp3
fmove.x fp2,fp1
fadd.x fp3,fp1
fcmp.x #4.0,fp1
fbgt @3
dbra d0,@1
@3:
move.w d0,(a0)
adda.l d3,a0
fsub.x fp0,fp7
dbra d1,@0
move.l CMandelVLinePhase.itsNextPhase(a3),d0
bra @5
@4:
fmove.x fp7,CMandelVLinePhase.itsVStart(a3)
move.w d1,CMandelVLinePhase.itsLength(a3)
suba.l (a1),a0
move.l a0,CMandelVLinePhase.itsIndex(a3)
clr.l d0
@5:
fmovem (sp)+,fp4-fp7
movem.l (sp)+,d3/a3
}
}